home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / c / flash-0.4.3.lha / flash-0.4.3 / Lib / sound.h < prev    next >
C/C++ Source or Header  |  1999-02-21  |  2KB  |  86 lines

  1. /////////////////////////////////////////////////////////////
  2. // Flash Plugin and Player
  3. // Copyright (C) 1998 Olivier Debon
  4. // 
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. // 
  10. // This program is distributed in the hope that it will be useful,
  11. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. // GNU General Public License for more details.
  14. // 
  15. // You should have received a copy of the GNU General Public License
  16. // along with this program; if not, write to the Free Software
  17. // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  18. // 
  19. ///////////////////////////////////////////////////////////////
  20. #ifndef _SOUND_H_
  21. #define _SOUND_H_
  22.  
  23. #include "character.h"
  24.  
  25. #define GET_SOUND_RATE_CODE(f) (((f)&0x0c)>>2)
  26.  
  27. class Sound : public Character {
  28.     long         soundRate;    // In hz
  29.     long         stereo;    // True if stereo sound
  30.     long         sampleSize;    // 1 or 2 bytes
  31.  
  32.     char        *samples;        // Array of samples
  33.     long         nbSamples;
  34.  
  35. public:
  36.     Sound(long id);
  37.     ~Sound();
  38.     void         setSoundFlags(long f);
  39.     char        *setNbSamples(long n);
  40.  
  41.     long         getRate();
  42.     long         getChannel();
  43.     long         getNbSamples();
  44.     long         getSampleSize();
  45.     char        *getSamples();
  46. };
  47.  
  48. struct SoundList {
  49.     long     rate;
  50.     long     stereo;
  51.     long     sampleSize;
  52.     long     nbSamples;
  53.     long     remaining;
  54.     char    *current;
  55.  
  56.     SoundList *next;
  57. };
  58.  
  59. class SoundMixer {
  60.  
  61.     SoundList    *list;
  62.     char *         buffer;
  63.  
  64. // Class variables
  65. static  long         dsp;        // Descriptor for /dev/dsp
  66. static    long         blockSize;
  67. static    long         nbInst;    // Number of instances
  68.  
  69.     // Sound Device Capabilities
  70. static    long         soundRate;    // In hz
  71. static    long         stereo;    // True if stereo sound
  72. static    long         sampleSize;    // 1 or 2 bytes
  73.  
  74. public:
  75.     SoundMixer(char*);
  76.     ~SoundMixer();
  77.  
  78.     void         startSound(Sound *sound);    // Register a sound to be played
  79.     void         stopSounds();        // Stop every current sounds in the instance
  80.  
  81.     long         playSounds();        // Actually play sounds of all instances
  82.     long         fillSoundBuffer(SoundList *, char *buffer, long bufferSize); // Fill sound buffer
  83. };
  84.  
  85. #endif /* _SOUND_H_ */
  86.